package com.zrkizzy.seckill.service.core;

import com.zrkizzy.seckill.entity.Order;
import com.baomidou.mybatisplus.extension.service.IService;
import com.zrkizzy.seckill.entity.User;
import com.zrkizzy.seckill.vo.system.GoodsVO;
import com.zrkizzy.seckill.vo.system.OrderDetailVO;

/**
 * <p>
 * 订单表 服务类
 * </p>
 *
 * @author zhangrongkang
 * @since 2023-03-22
 */
public interface IOrderService extends IService<Order> {

    /**
     * 商品秒杀逻辑
     *
     * @param user 用户信息对象
     * @param goods 商品详情
     * @return 订单信息
     */
    Order secKill(User user, GoodsVO goods);

    /**
     * 获取订单详情
     *
     * @param orderId 订单ID
     * @return 订单详情返回对象
     */
    OrderDetailVO detail(Long orderId);

    /**
     * 获取秒杀接口的地址
     *
     * @param user 用户对象
     * @param goodsId 商品ID
     * @return 前端响应对象
     */
    String createPath(User user, Long goodsId);

    /**
     * 校验秒杀地址
     *
     * @param path 加密后的请求地址
     * @param user 用户对象
     * @param goodsId 商品ID
     * @return 秒杀地址是否正确
     */
    Boolean checkPath(String path, User user, Long goodsId);

    /**
     * 验证验证码
     *
     * @param user 用户对象
     * @param goodsId 商品ID
     * @param kaptcha 验证码
     * @return 验证码是否正确
     */
    Boolean checkKaptcha(User user, Long goodsId, String kaptcha);
}
